<?php
declare (strict_types=1);

namespace app\api\middleware;

class Auth
{
    /**
     * 处理请求
     *
     * @param \think\Request $request
     * @param \Closure $next
     * @return Response
     */
    public function handle($request, \Closure $next)
    {
        //前置中间件
//        if (empty(session('adminUser')) && !preg_match("/login/", $request->pathinfo())) {
//            return redirect((string)url('login/index'));
//        }
        //ajax 返回api格式 例如处理rbac

        //这样会处理所有api下的控制器  所以需要
//            return $this->show(config("status.not_login"), "没有登录");
        if (in_array($request->pathinfo(), config('login.need_verify_login')))

            if (!$this->isLogin()) return ajaxReturn(0, '', '未登录,请先登录');

        return $next($request);
    }

    public function end(\think\Response $response)
    {
    }

    /**
     * 判断用户是否登录
     * @return bool
     */
    public function isLogin()
    {

        $token = request()->header("access-token");
        $userInfo = cache(config("redis.token_pre") . $token);
        if (!$userInfo) {
            return false;
        }
        if (!empty($userInfo['id']) && !empty($userInfo['username'])) {

            return true;
        }

        return false;

    }
}
